#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 用计算机模拟掷骰子1000-10000次，计算每种点数出现的次数和比率。

void ThrowDice(int cycle, int times[]) // 投掷骰子并计算每种点数出现次数
{
	int i = 0;
	for (i = 0; i < cycle; i++)
	{
		int a = rand() % 6; // 投掷骰子
		times[a] += 1;		// 计数
	}
}

void GetInput(int *pcycle) // 输入骰子投掷次数
{
	while (1) // 输入骰子投掷次数
	{
		printf("请输入骰子投掷次数(1000-10000):");
		scanf("%d", pcycle);
		if (*pcycle < 1000 || *pcycle > 10000) // 控制投掷骰子次数在1000-10000范围内
			printf("输入有误，请重新输入!\n");
		else
			break;
	}
}

void ShowOutput(int cycle, int times[]) // 输出每种点数出现的次数和比率
{
	int i = 0;
	printf("出现次数:\n");
	for (i = 0; i < 6; i++)
	{
		printf("%d: %d次,", i + 1, times[i]); // 输出出现的次数
	}
	printf("比率:\n");
	for (i = 0; i < 6; i++)
	{
		printf("%d: %.2f%%,", i + 1, times[i] * 100.0 / cycle); // 输出出现的比率
	}
	printf("\n");
}

int main()
{
	srand((int)time(NULL));
	int cycle = 0;					   // 骰子投掷次数
	int times[6] = {0, 0, 0, 0, 0, 0}; // 每种点数出现次数
	GetInput(&cycle);				   // 输入骰子投掷次数
	ThrowDice(cycle, times);		   // 投掷骰子并计算每种点数出现次数
	ShowOutput(cycle, times);		   // 输出每种点数出现的次数和比率
	return 0;
}
